package com.bw.home.vm

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import com.bw.common.entity.NoticeEntityItem
import com.bw.common.vm.BaseViewModel
import com.bw.home.model.HomeRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import javax.inject.Inject

/**
 * 协程调度器Dispatchers
 * Dispatchers.IO       在子线程中调度（使用线程池，其中线程数64个），适合用于耗时多任务场景
 * Dispatchers.Main     在主线程中调度（在UI线程，只有1个），适用于UI更新
 * Dispatchers.Default  取决于调用方(固定数量线程池，其中线程数CPU个数+1)，使用于少量任务复杂计算
 * Dispatchers.Unconfined   没有限制（没有限制线程数量）
 */
@HiltViewModel
class HomeViewModel @Inject constructor(private val repo: HomeRepository) :BaseViewModel() {
    //定义LiveData缓存数据
    val mSuccess = MutableLiveData<List<NoticeEntityItem>>()
    fun getListData(page:Int,size:Int){
        //启动子线程并运行协程
        viewModelScope.launch(mDispatcher) {
                //调用仓库方法获取数据
                val (code , data, message) = repo.loadNoticeData(page, size)
                if (code==200){
                    mSuccess.postValue(data)
                }else{
                    mError.postValue("请求失败${message}")
                }
        }
    }

//    fun queryUserInfoFormRoom(userId: Int) {
//        mViewModelScope.launch(mDispatcher) {
//            val userInfo = repo.queryUserInfo(userId)
//            mUserInfo.postValue(userInfo)
//        }
//    }


}